import java.util.Stack;

public class MyQueue {
    // leetcode 用栈实现队列
    // https://leetcode.cn/problems/implement-queue-using-stacks/description/
    Stack<Integer> stack1, stack2;
    public MyQueue() {
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }

    // 插入元素的时候只插入stack1
    public void push(int x) {
        stack1.add(x);
    }

    // 弹出的话，首先将stack1中的元素都弹入stack2，然后弹出stack2的栈顶元素，随后将stack2中的元素再弹到stack1中
    public int pop() {
        while (!stack1.isEmpty()) {
            stack2.add(stack1.pop());
        }
        int ret = stack2.pop();
        while (!stack2.isEmpty()) {
            stack1.add(stack2.pop());
        }
        return ret;
    }

    public int peek() {
        while (!stack1.isEmpty()) {
            stack2.add(stack1.pop());
        }
        int ret = stack2.peek();
        while (!stack2.isEmpty()) {
            stack1.add(stack2.pop());
        }
        return ret;
    }

    public boolean empty() {
        return stack1.isEmpty();
    }
}
